/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package InterfazUsuario;

import Controlador.CTRL_AdministrarAsistencias;
import Controlador.CTRL_AsignarPersonalFeria;
import Controlador.CTRL_AsistenciaDeFeria;
import Controlador.CTRL_Feria;
import Controlador.CTRL_Kardex;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;

/**
 *
 * @author Isaac Paliza <anndysaac@hotmail.com>
 */
public class Sistema extends HttpServlet {

    public static List datosKardex;
    public static List datosFeria;
//    public static List MovimientoEntrada;
    static String url;
    String idFeria = Usuario.instancia.get(0).getIdFeria();

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     * @throws java.sql.SQLException
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException {
        String botonRedizionarModuloAux = request.getParameter("idModulo");
        if (botonRedizionarModuloAux != null) {
            if (Integer.parseInt(botonRedizionarModuloAux) == 5) {
                if (AsistenciaDeFeria(request, response) == false) {
                    url = "/Vista/AdmDeFerias/AsistenciaDeFeria/GuardarAsistenciaDeFeria.jsp";
                    redireccionar(request, response);
                    return;
                }
            }
            if (Integer.parseInt(botonRedizionarModuloAux) == 6) {
                if (PersonalDeFeria(request, response) == false) {
                    url = "/Vista/AdmDeFerias/PersonalDeFeria/GuardasPersonalDeFeria.jsp";
                    redireccionar(request, response);
                    return;
                }
            }
            if (Integer.parseInt(botonRedizionarModuloAux) == 7) {
                if (GestionarKardex(request, response) == false) {

                }
            }
            if (Integer.parseInt(botonRedizionarModuloAux) == 11) {
                if (AdministrarAsistencias(request, response) == false) {

                }
            }
            if (Integer.parseInt(botonRedizionarModuloAux) == 23) {
                if (AsignarPersonalFeria(request, response) == false) {

                }
            }
            url = request.getParameter("url");
            redireccionar(request, response);
        }
        String bMovimiento = request.getParameter("Movimientos");
        if (bMovimiento != null) {
            if (cargarMovimientos(request, response) == false) {
            }
        }

    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (SQLException ex) {
            Logger.getLogger(Sistema.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (SQLException ex) {
            Logger.getLogger(Sistema.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    private boolean AsistenciaDeFeria(HttpServletRequest request, HttpServletResponse response) throws SQLException {
        String fechaActualSist = Controlador.Sistema.getFechaActualSistema();

        if (CTRL_AsistenciaDeFeria.comprobarAsistencia(idFeria, fechaActualSist, "1") == 0) {
            //no hay asistencia
            List ListaAsistenciaC = CTRL_AsistenciaDeFeria.CargarListaACabezera(idFeria);
            List ListaAsistencia = CTRL_AsistenciaDeFeria.CargarListaTrabajadores(idFeria, "1");
            request.setAttribute("DatosdeAsistenciaCabezera", ListaAsistenciaC);
            request.setAttribute("DatosdeAsistencia", ListaAsistencia);
            return false;
        }
        //si hay asistencia
        List ListaAsistenciaC = CTRL_AsistenciaDeFeria.CargarListaACabezera(idFeria);
        if (ListaAsistenciaC.isEmpty()) {
            return false;
        }
        request.setAttribute("DatosdeAsistenciaCabezera", ListaAsistenciaC);
        request.setAttribute("Mensaje", "Asistencia ya realizada");
        return true;
    }

    private boolean GestionarKardex(HttpServletRequest request, HttpServletResponse response) throws SQLException {
        datosFeria = CTRL_Feria.CargarFeria(idFeria);
        if (datosFeria.isEmpty()) {
            return false;
        }
        datosKardex = CTRL_Kardex.CargarKardex2(idFeria, CTRL_Kardex.getFechaBD(idFeria));
        request.setAttribute("CargarKardexCabezera", datosFeria);
        request.setAttribute("CargarKardex", datosKardex);
        return true;
    }

    private boolean cargarMovimientos(HttpServletRequest request, HttpServletResponse response) throws SQLException {
//        MovimientoEntrada = CTRL_Feria.CargarMovimientoEntrada(idFeria);
        url = "/Vista/AdmDeFerias/GestionarKardex/MovimientosKardex.jsp";
        request.setAttribute("CargarKardexCabezera", datosFeria); //cabezera
        request.setAttribute("CargarKardex", datosKardex);
//        request.setAttribute("MovimientoEntrada", MovimientoEntrada);
        redireccionar(request, response);
        return true;
    }

    private void redireccionar(HttpServletRequest request, HttpServletResponse response) {
        ServletContext context = this.getServletContext();
        RequestDispatcher view = context.getRequestDispatcher(url);
        try {
            view.forward(request, response);
        } catch (ServletException ex) {
        } catch (IOException ex) {
        }
    }

    private boolean PersonalDeFeria(HttpServletRequest request, HttpServletResponse response) throws SQLException {
        String fechaActualSist = Controlador.Sistema.getFechaActualSistema();

        if (CTRL_AsistenciaDeFeria.comprobarAsistencia(idFeria, fechaActualSist, "2") == 0) {
            //no hay asistencia
            List ListaAsistenciaC = CTRL_AsistenciaDeFeria.CargarListaACabezera(idFeria);
            List ListaAsistencia = CTRL_AsistenciaDeFeria.CargarListaTrabajadores(idFeria, "2");
            request.setAttribute("DatosdeAsistenciaCabezera", ListaAsistenciaC);
            request.setAttribute("DatosdeAsistencia", ListaAsistencia);
            return false;
        }
        //si hay asistencia
        List ListaAsistenciaC = CTRL_AsistenciaDeFeria.CargarListaACabezera(idFeria);
        if (ListaAsistenciaC.isEmpty()) {
            return false;
        }
        request.setAttribute("DatosdeAsistenciaCabezera", ListaAsistenciaC);
        request.setAttribute("Mensaje", "Asistencia ya realizada");
        return true;
    }

    private boolean AdministrarAsistencias(HttpServletRequest request, HttpServletResponse response) throws SQLException {
        List ListaAsistenciaTrabajadores = CTRL_AdministrarAsistencias.CargarListaAsistenciaTrabajadores(idFeria);
        request.setAttribute("ListaAsistenciaTrabajadores", ListaAsistenciaTrabajadores);
        return true;
    }

    private boolean AsignarPersonalFeria(HttpServletRequest request, HttpServletResponse response) throws SQLException {
        List ListaFeria = CTRL_AsignarPersonalFeria.CargarListaFeria();
        request.setAttribute("ListaFeria", ListaFeria);
        return true;
    }
}
